/**
 * 日期处理相关工具
 */
export default class DateUtils {
    public static format(date: Date | string, fmt: string): string {
        if (!date) {
            return '';
        }
        if (typeof date === 'string') {
            return date;
        }
        const o = {
            'M+': date.getMonth() + 1, // 月份
            'd+': date.getDate(), // 日
            'h+': date.getHours(), // 小时
            'm+': date.getMinutes(), // 分
            's+': date.getSeconds(), // 秒
            'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
            'S': date.getMilliseconds(), // 毫秒
        };
        if (/(y+)/.test(fmt)) {
            fmt = fmt.replace(RegExp.$1,
                (date.getFullYear() + '').substr(4 - RegExp.$1.length));
        }
        for (const k in o) {
            if (new RegExp('(' + k + ')').test(fmt)) {
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ?
                    (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));
            }
        }
        return fmt;
    }
    public static formatDay(date: Date | string) {
        return this.format(date, 'yyyy-MM-dd');
    }
    public static monthAdd(date: Date, month: number): Date {
        const nd = new Date(date);
        nd.setUTCMonth(nd.getUTCMonth() + month);
        return nd;
    }
}
